<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8" />
        <meta http-equiv="X-UA-Compatible" content="IE=edge" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <title>Document</title>
    </head>
    <body>
        <button>按钮1</button>
        <button>按钮2</button>
        <button>按钮3</button>
        <script>
            let btns = document.querySelectorAll('button');
            for (let index = 0; index < btns.length; index++) {
                // console.log(btns[index]);
                // ~(function (index) {
                //     btns[index].onclick = function () {
                //         console.log(index); // index: undefined,
                //     };
                // })(index);

                btns[index].onclick = function () {
                    console.log(index); // index: undefined,
                };
            }
            // console.log(index);

            function fn() {
                console.log(110);
            }
            fn();

            // 匿名函数自执行
            (function () {
                // console.log(2222);
            })();

            /*
                1.函数嵌套函数
                2.子函数使用了父函数的变量
                3.子函数又被外界所引用

                闭包最大的作用就是存值
            */ 
            function fn() {
                let a = 1;
                return function sum() {
                    // console.log(a++);
                    return a++;
                };
            }

            let fn2 = fn();
            console.dir(fn2);
            console.log(fn2());
            console.log(fn2());
            console.log(fn2());
            console.log(fn2());
            // console.log(fn()());
            // console.log(fn()());
            // console.log(fn()());

            // function fn(fn2) {
            //     return fn2(function () {
            //         console.log(2);
            //     });
            // }

            // fn(function () {
            //     console.log(1);
            // });

        </script>
    </body>
</html>
